package com.tom.architect02.mnbase.annotation.fs2.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * Added by Tom on 2024/04/15.
 * 动态代理，必须实现 InvocationHandler
 * 中介公司的通用代理类。
 */
public class DynamicProxy implements InvocationHandler {
    private Object object; // 被代理的对象
    public DynamicProxy(Object object) {
        this.object = object;
    }

    @Override
    public Object invoke(Object o, Method method, Object[] args) throws Throwable {
        // 代理者传过去，参数传过去，然后执行当前 method 代理方法。
        method.invoke(object, args);
        // 返回代理对象本身
        return object;
    }
}
